# [revert] 이전 커밋의 변경사항을 되돌리고 싶어요.

이전 커밋의 변경사항을 되돌려야 하는 상황은 꽤 많이 발생합니다. 에러를 발생시키는 커밋이 있다면, 빠르게 해당 커밋의 변경사항을 되돌려야 합니다.

# git revert {커밋 ID}

다음과 같은 세 개의 커밋이 있는 상황이라고 합시다.

$ git log --oneline

875a6e6 b 파일을 추가한다
1fc71a0 a 파일을 수정한다
b014111 a 파일을 추가한다

이때 우리는 1fc71a0 (a 파일을 수정한다) 커밋이 문제가 있다는 걸 알게 됐습니다. 1fc71a0 커밋 내용은 이미 remote repository 공간에 올라갔습니다.

중간에 있는 커밋의 변경사항만 되돌리기 위해선 git reset은 부족해 보입니다. 이럴 때 사용하는 명령어가 git revert 입니다. 기존 커밋들을 지우지 않고, 현재 커밋 위로 이전 커밋 내용을 다시 되돌리는 커밋을 만듭니다.

$ git revert 1fc71a0

Revert "a 파일을 수정한다"
This reverts commit 1fc71a0e2b3839cdd0ada557df823609f234610a.

# 변경 사항에 대한 커밋 메시지를 입력하십시오. '#' 문자로 시작하는
# 줄은 무시되고, 메시지를 입력하지 않으면 커밋이 중지됩니다.
#
# 현재 브랜치 main
# 커밋할 변경 사항:
#       수정함:        a
#

이제 로그를 확인하면 다음처럼 1fc71a0 시점 때의 작업물로 되돌아온 것을 확인할 수 있습니다.

$ git log --oneline

dea542b This reverts commit 1fc71a0e2b3839cdd0ada557df823609f234610a.
875a6e6 b 파일을 추가한다
1fc71a0 a 파일을 수정한다
b014111 a 파일을 추가한다

TIP

이전 커밋을 되돌려야 하는 상황일 때 rebase --interactive를 사용하여 커밋 내역을 조작할 수 있습니다 (다음 장에서 다룹니다)

Last Updated: 2/20/2022, 1:51:31 PM

CC-BY-NC-ND-4.0 Licensed | Copyright © 2021-present Grab